package com.gonsin.gview.common.services;

import com.baomidou.mybatisplus.extension.service.IService;
import com.gonsin.base.GPageRequest;
import com.gonsin.base.GPageResult;
import com.gonsin.gview.common.bean.UserBean;
import com.gonsin.gview.common.po.UserAddRequestMiniApp;
import com.gonsin.gview.common.po.UserBo;
import com.gonsin.gview.common.po.UserPo;
import com.gonsin.gview.common.po.UserSearchPo;

import java.util.List;

/**
 * 账户处理逻辑
 */
public interface IUserService extends IService<UserBean> {

    /**
     * 重置人员资料key
     *
     * @param userMessageKey 人员资料key
     */
    void resetUserMessageKey(String userMessageKey);

    /**
     * 根据userKey绑定人员资料key
     *
     * @param userMessageKey 人员资料key
     * @param userKey        用户key
     */
    void bindUserMessageKey(String userMessageKey, String userKey);

    /**
     * 获取会议中心所有管理员
     *
     * @param edificeKey 会议中心key
     * @return List<UserBean>所有管理员
     */
    List<UserBean> findAllRendAdmin(String edificeKey);

    /**
     * 普通账号密码登录
     *
     * @param username 账号或用户名
     * @param password 密码
     * @return 登录成功的个人信息
     */
    UserBo login(String username, String password);

    /**
     * 通过loginId登录
     */
    UserBo loginByLoginId(String loginId);


    /**
     * 获取一个账户
     */
    UserBean getUser(String userKey);

    /**
     * 根据用户名获取用户
     */
    UserBean getUserByName(String userName);

    /**
     * 查询多个
     */
    GPageResult<UserBean> searchUser(String edificeKey, UserSearchPo searchPo, GPageRequest pageRequest);

    /**
     * 修改一个账户
     */
    UserBean updateUser(String userKey, UserPo user);

    /**
     * 添加一个账户
     */
    UserBean addUser(String edificeKey, UserPo user);

    /**
     * 删除一个账户
     */
    void deleteUser(String userKey);

    /**
     * 批量删除账户
     */
    void batchDeleteUser(String edificeKey, UserSearchPo searchPo);
}
